/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ctrl.sys;

import java.io.ObjectOutputStream;
import java.net.Socket;

/**
 * Classe permettant à un client d'envoyer une demande au serveur sous forme de Thread
 * @author Willy
 */
public class ClientSend extends Thread {
    private Demande ask; // la demande du client
    private Socket sClient;
    ObjectOutputStream OUT; // flux d'écriture réseau

    public ClientSend(Socket sClient, Demande ask){
        this.ask=ask;
        this.sClient=sClient;
    }

    public Demande getAsk() {
        return ask;
    }

    public void setAsk(Demande ask) {
        this.ask = ask;
    }

    @Override
    public String toString() {
        return this.OUT+"";
    }

    
    /**
     * Methode run qui permet de démarrer le procesus d'envoi des paquets
     */
    public void run(){
        // données locales

        System.out.println("client= "+OUT);
        Demande commande=null; // demande du client
        try{
            OUT=new ObjectOutputStream(sClient.getOutputStream());
            if(sClient.isConnected()) // si le client est connecté
            {
                commande=this.ask; // lecture commande faite par le client
                if (commande!=null) {
                    // envoi commande au serveur
                    OUT.reset();
                    OUT.writeObject(commande);
                    OUT.flush();
                }
            }
        }catch(Exception ex){
            System.err.println("Envoi : L'erreur suivante s'est produite : " + ex.getMessage());
            ex.printStackTrace();
        }
        System.out.println("[Envoi : fin du thread d'envoi des commandes au serveur]");
    }
}

